<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>hashcat-3.201: H:/TDDownload/Hashcat v3.20/hashcat-3.201/src/folder.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">hashcat-3.201
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_06fe396e3e859736df6d43ad26baa72e.html">hashcat-3.201</a></li><li class="navelem"><a class="el" href="dir_9ce3dfc5d638c7f8b2c4ec0f6627771b.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">folder.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;common.h&quot;</code><br />
<code>#include &quot;types.h&quot;</code><br />
<code>#include &quot;memory.h&quot;</code><br />
<code>#include &quot;event.h&quot;</code><br />
<code>#include &quot;shared.h&quot;</code><br />
<code>#include &quot;folder.h&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for folder.c:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c__incl.gif" border="0" usemap="#_h_1_2_t_d_download_2_hashcat_01v3_820_2hashcat-3_8201_2src_2folder_8c" alt=""/></div>
<map name="_h_1_2_t_d_download_2_hashcat_01v3_820_2hashcat-3_8201_2src_2folder_8c" id="_h_1_2_t_d_download_2_hashcat_01v3_820_2hashcat-3_8201_2src_2folder_8c">
<area shape="rect"  title=" " alt="" coords="209,5,372,61"/>
<area shape="rect"  title=" " alt="" coords="5,109,88,136"/>
<area shape="rect"  title=" " alt="" coords="113,109,178,136"/>
<area shape="rect"  title=" " alt="" coords="203,109,283,136"/>
<area shape="rect"  title=" " alt="" coords="307,109,370,136"/>
<area shape="rect"  title=" " alt="" coords="395,109,467,136"/>
<area shape="rect"  title=" " alt="" coords="491,109,555,136"/>
</map>
</div>
</div>
<p><a href="folder_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2c805d1855b4a1b7c3b71991036659c8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a2c805d1855b4a1b7c3b71991036659c8">sort_by_stringptr</a> (const void *p1, const void *p2)</td></tr>
<tr class="separator:a2c805d1855b4a1b7c3b71991036659c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a717595a952971e642a55e58b77079926"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a717595a952971e642a55e58b77079926">get_exec_path</a> (char *exec_path, const size_t exec_path_sz)</td></tr>
<tr class="separator:a717595a952971e642a55e58b77079926"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7697b2aed3a857b8929a4a88b9a939e9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a7697b2aed3a857b8929a4a88b9a939e9">get_install_dir</a> (char *install_dir, const char *exec_path)</td></tr>
<tr class="separator:a7697b2aed3a857b8929a4a88b9a939e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26f541fb9b4371e031974f3963d1461"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#ab26f541fb9b4371e031974f3963d1461">count_dictionaries</a> (char **dictionary_files)</td></tr>
<tr class="separator:ab26f541fb9b4371e031974f3963d1461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dd78caa13aa06829ce842d58e32b82b"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a8dd78caa13aa06829ce842d58e32b82b">first_file_in_directory</a> (const char *path)</td></tr>
<tr class="separator:a8dd78caa13aa06829ce842d58e32b82b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1b45d4b9134e94d056df48b098bc925"><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#ab1b45d4b9134e94d056df48b098bc925">scan_directory</a> (const char *path)</td></tr>
<tr class="separator:ab1b45d4b9134e94d056df48b098bc925"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6685756c6c027b0fb21b7b357326b358"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a6685756c6c027b0fb21b7b357326b358">folder_config_init</a> (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *install_folder, MAYBE_UNUSED const char *shared_folder)</td></tr>
<tr class="separator:a6685756c6c027b0fb21b7b357326b358"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcb834a48a7cc81e6e5b9bf3f01b50ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#afcb834a48a7cc81e6e5b9bf3f01b50ad">folder_config_destroy</a> (hashcat_ctx_t *hashcat_ctx)</td></tr>
<tr class="separator:afcb834a48a7cc81e6e5b9bf3f01b50ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46700af30821003d1bd4636eb89394b6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder_8c.html#a46700af30821003d1bd4636eb89394b6">hc_mkdir</a> (const char *name, MAYBE_UNUSED const int mode)</td></tr>
<tr class="separator:a46700af30821003d1bd4636eb89394b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="ab26f541fb9b4371e031974f3963d1461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab26f541fb9b4371e031974f3963d1461">&#9670;&nbsp;</a></span>count_dictionaries()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int count_dictionaries </td>
          <td>(</td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>dictionary_files</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00114">114</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keywordflow">if</span> (dictionary_files == NULL) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="keywordtype">int</span> cnt = 0;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> d = 0; dictionary_files[d] != NULL; d++)</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    cnt++;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">return</span> (cnt);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="induct_8c_source.html#l00098">induct_ctx_scan()</a>, <a class="el" href="outfile__check_8c_source.html#l00019">outfile_remove()</a>, and <a class="el" href="straight_8c_source.html#l00174">straight_ctx_init()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_ab26f541fb9b4371e031974f3963d1461_icgraph.gif" border="0" usemap="#folder_8c_ab26f541fb9b4371e031974f3963d1461_icgraph" alt=""/></div>
<map name="folder_8c_ab26f541fb9b4371e031974f3963d1461_icgraph" id="folder_8c_ab26f541fb9b4371e031974f3963d1461_icgraph">
<area shape="rect"  title=" " alt="" coords="968,56,1095,83"/>
<area shape="rect"  href="induct_8c.html#a3f87d03536d320ed0caf58058947cfe0" title=" " alt="" coords="803,5,920,32"/>
<area shape="rect"  href="outfile__check_8c.html#a39b7fbaa8d12928613fcd7399eb49ad2" title=" " alt="" coords="651,56,755,83"/>
<area shape="rect"  href="straight_8c.html#ac38042838c02bcb1ca4b24b87047b34d" title=" " alt="" coords="804,107,919,133"/>
<area shape="rect"  href="hashcat_8c.html#a9ec4f74d423ae0bd4aa6e960632b7086" title=" " alt="" coords="659,5,747,32"/>
<area shape="rect"  href="hashcat_8c.html#ad6cc36d03dcdad3413c794efecb3178a" title=" " alt="" coords="485,5,573,32"/>
<area shape="rect"  href="hashcat_8c.html#ac33e9695b713153c0fc7cce11696704b" title=" " alt="" coords="325,56,408,83"/>
<area shape="rect"  href="hashcat_8c.html#ac49fece3f82732fda9eb29766cc01168" title=" " alt="" coords="104,56,277,83"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,56,56,83"/>
<area shape="rect"  href="outfile__check_8c.html#aa0e20db36255679b69e7423e65995f99" title=" " alt="" coords="456,56,603,83"/>
</map>
</div>

</div>
</div>
<a id="a8dd78caa13aa06829ce842d58e32b82b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8dd78caa13aa06829ce842d58e32b82b">&#9670;&nbsp;</a></span>first_file_in_directory()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* first_file_in_directory </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00128">128</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  DIR *d = NULL;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">if</span> ((d = opendir (path)) != NULL)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  {</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordtype">char</span> *first_file = NULL;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">    #if 0</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keyword">struct </span>dirent e;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="keywordflow">for</span> (;;)</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;      memset (&amp;e, 0, <span class="keyword">sizeof</span> (e));</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <span class="keyword">struct </span>dirent *de = NULL;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keywordflow">if</span> (readdir_r (d, &amp;e, &amp;de) != 0) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keywordflow">if</span> (de == NULL) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="preprocessor">    #else</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keyword">struct </span>dirent *de;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">while</span> ((de = readdir (d)) != NULL)</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="keywordflow">if</span> ((strncmp (de-&gt;d_name, <span class="stringliteral">&quot;.&quot;</span>, strlen (de-&gt;d_name)) == 0) || (strncmp (de-&gt;d_name, <span class="stringliteral">&quot;..&quot;</span>, strlen (de-&gt;d_name)) == 0)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      first_file = strdup (de-&gt;d_name);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    closedir (d);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keywordflow">return</span> first_file;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  }</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno == ENOTDIR)</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  {</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  }</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="hwmon_8c_source.html#l00065">hm_SYSFS_get_syspath_hwmon()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a8dd78caa13aa06829ce842d58e32b82b_icgraph.gif" border="0" usemap="#folder_8c_a8dd78caa13aa06829ce842d58e32b82b_icgraph" alt=""/></div>
<map name="folder_8c_a8dd78caa13aa06829ce842d58e32b82b_icgraph" id="folder_8c_a8dd78caa13aa06829ce842d58e32b82b_icgraph">
<area shape="rect"  title=" " alt="" coords="2915,111,3055,138"/>
<area shape="rect"  href="hwmon_8c.html#abf031f4b5527147837b47c9209165bf2" title=" " alt="" coords="2697,104,2867,145"/>
<area shape="rect"  href="hwmon_8c.html#a79da2dd855f6ed0ee79131d37d0c5d94" title=" " alt="" coords="2462,136,2645,177"/>
<area shape="rect"  href="hwmon_8c.html#ac22c5509e918ca08f2680959f93004ea" title=" " alt="" coords="2460,17,2647,43"/>
<area shape="rect"  href="hwmon_8c.html#a1a417ff88601c42ddfb661dcff8792b5" title=" " alt="" coords="2462,71,2645,112"/>
<area shape="rect"  href="hwmon_8c.html#aed06d94b394b9d337dc315b753551c5b" title=" " alt="" coords="2457,201,2649,243"/>
<area shape="rect"  href="hwmon_8c.html#a9368ad74254cefd85edb7e6a3b4f356f" title=" " alt="" coords="2255,136,2409,177"/>
<area shape="rect"  href="hwmon_8c.html#a6db48ad4f8b9c42fb1eab2a8341bb85d" title=" " alt="" coords="2072,78,2184,105"/>
<area shape="rect"  href="monitor_8c.html#a6070c1efbb12309f3d3504ccd1f6ca3d" title=" " alt="" coords="2095,135,2161,162"/>
<area shape="rect"  href="status_8c.html#a6e36bff711d78e207b3d047928a85afc" title=" " alt="" coords="2049,209,2207,235"/>
<area shape="rect"  href="hashcat_8c.html#a9f3f1b757bdc2a874b4bb0dc657bde1d" title=" " alt="" coords="829,63,973,90"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="183,114,234,141"/>
<area shape="rect"  href="monitor_8c.html#ab9ac4a7731cf2a12f37be8fcdaa38a43" title=" " alt="" coords="1878,125,1986,151"/>
<area shape="rect"  href="hashcat_8c.html#ac33e9695b713153c0fc7cce11696704b" title=" " alt="" coords="1282,114,1365,141"/>
<area shape="rect"  href="hashcat_8c.html#ac49fece3f82732fda9eb29766cc01168" title=" " alt="" coords="600,114,773,141"/>
<area shape="rect"  href="hashcat_8c.html#a325cba22ef98f99a706d99c65989a2c2" title=" " alt="" coords="1864,266,2000,293"/>
<area shape="rect"  href="hashcat_8c.html#a9ec4f74d423ae0bd4aa6e960632b7086" title=" " alt="" coords="1675,165,1763,191"/>
<area shape="rect"  href="main__shared_8c.html#ae96d7808ccfe95bbec7a55e2ada91935" title=" " alt="" coords="1694,317,1745,343"/>
<area shape="rect"  href="terminal_8c.html#ae3a80a3f67aa1810c8d9e49911f490a6" title=" " alt="" coords="1638,419,1801,460"/>
<area shape="rect"  href="terminal_8c.html#a64a36e504f5e3a0b633b17dcfcf8366f" title=" " alt="" coords="1458,393,1565,419"/>
<area shape="rect"  href="terminal_8c.html#ab059eb0bceb2ee24e8f86c04f4354d16" title=" " alt="" coords="1624,266,1815,293"/>
<area shape="rect"  href="terminal_8c.html#a30f3bb901b9e4c86fe78abb104c2f2fa" title=" " alt="" coords="1447,266,1576,293"/>
<area shape="rect"  href="hashcat_8c.html#ad6cc36d03dcdad3413c794efecb3178a" title=" " alt="" coords="1467,165,1555,191"/>
<area shape="rect"  href="main_8c.html#af6ada2a7aa24abc385db81bf2967d967" title=" " alt="" coords="1248,342,1399,369"/>
<area shape="rect"  href="main_8c.html#a4e664697b793b6744c9849c1de53a051" title=" " alt="" coords="1043,444,1186,485"/>
<area shape="rect"  href="terminal_8c.html#a99e7c4c326b4b2acdbe60cedc81efea1" title=" " alt="" coords="1286,393,1361,419"/>
<area shape="rect"  href="main_8c.html#a73c3170c7171851eb6e8f5a402599423" title=" " alt="" coords="661,418,713,445"/>
<area shape="rect"  href="hashcat_8c.html#ade4c61ccaafb16eae04c7d4b727942f3" title=" " alt="" coords="400,215,492,242"/>
<area shape="rect"  href="opencl_8c.html#a3797f3c2680a9e341e314ad0c84c9b16" title=" " alt="" coords="348,621,544,647"/>
<area shape="rect"  href="opencl_8c.html#a0c2e61014e4dab417caa193c598b6a23" title=" " alt="" coords="167,367,250,394"/>
<area shape="rect"  href="opencl_8c.html#a6b505220d582c3a31d651cbe1d685484" title=" " alt="" coords="383,367,509,394"/>
<area shape="rect"  href="opencl_8c.html#ab47974684ac3076a5e2fe97db360f1f1" title=" " alt="" coords="362,671,530,698"/>
<area shape="rect"  href="opencl_8c.html#ac62e3f353065d17d4caa46e165be51c2" title=" " alt="" coords="125,773,292,799"/>
<area shape="rect"  href="opencl_8c.html#a707b32d6170142181dc47bc668c03efa" title=" " alt="" coords="363,469,529,495"/>
<area shape="rect"  href="opencl_8c.html#af7aecf5b949a11bafa5f455504b5a8c2" title=" " alt="" coords="365,519,527,546"/>
<area shape="rect"  href="opencl_8c.html#aba298160a7f6951fdd26c1e2846e7f9b" title=" " alt="" coords="340,570,552,597"/>
<area shape="rect"  href="opencl_8c.html#a1a05fbe1529ac9bd5fcd1a0fed0f0fe7" title=" " alt="" coords="360,317,532,343"/>
<area shape="rect"  href="opencl_8c.html#ad598c213dd69579a45ca34bcac1ba552" title=" " alt="" coords="380,418,512,445"/>
<area shape="rect"  href="opencl_8c.html#a923e021b433067dd09b59522c754d4f4" title=" " alt="" coords="155,519,262,546"/>
<area shape="rect"  href="opencl_8c.html#aa3be407e53521e7f7f0d4de086ee7018" title=" " alt="" coords="157,570,261,597"/>
<area shape="rect"  href="opencl_8c.html#a3053f61b5154e477dca1ab3af40fc67f" title=" " alt="" coords="151,621,266,647"/>
<area shape="rect"  href="opencl_8c.html#a270475ec734ad9d206b4bfc7a8e7139b" title=" " alt="" coords="141,671,277,698"/>
<area shape="rect"  href="autotune_8c.html#a58022d7cc5d8126f33e8635c5ae62c2b" title=" " alt="" coords="5,697,77,723"/>
<area shape="rect"  href="terminal_8c.html#a5a70871e3050a17bffd2e15779d536d2" title=" " alt="" coords="1055,393,1174,419"/>
<area shape="rect"  href="main_8c.html#aa9cb60ea1fd75f8faf5ce16454f526ec" title=" " alt="" coords="821,397,981,423"/>
<area shape="rect"  href="hwmon_8c.html#aabd4a04cebf1c4aa45d643757d258e01" title=" " alt="" coords="2263,5,2401,47"/>
<area shape="rect"  href="hwmon_8c.html#ae8452e58e555df1866df8f73f23eafb8" title=" " alt="" coords="1863,13,2001,39"/>
<area shape="rect"  href="hashcat_8c.html#aac7de5dfb85c0aa9bccebf9782855ffa" title=" " alt="" coords="1029,13,1200,39"/>
<area shape="rect"  href="hwmon_8c.html#afcbb72ae81094b403c90f4e9e22897d7" title=" " alt="" coords="2255,71,2409,112"/>
<area shape="rect"  href="hwmon_8c.html#adad05fe015d5569bad75fd7c5f6bc64d" title=" " alt="" coords="2261,201,2403,243"/>
</map>
</div>

</div>
</div>
<a id="afcb834a48a7cc81e6e5b9bf3f01b50ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcb834a48a7cc81e6e5b9bf3f01b50ad">&#9670;&nbsp;</a></span>folder_config_destroy()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void folder_config_destroy </td>
          <td>(</td>
          <td class="paramtype">hashcat_ctx_t *&#160;</td>
          <td class="paramname"><em>hashcat_ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00475">475</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;{</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  folder_config_t *folder_config = hashcat_ctx-&gt;folder_config;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (folder_config-&gt;cpath_real);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (folder_config-&gt;cwd);</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (folder_config-&gt;install_dir);</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  memset (folder_config, 0, <span class="keyword">sizeof</span> (folder_config_t));</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;}</div><div class="ttc" id="memory_8c_html_ad8ba3dcf1734b1d2c8679600f0f0c3c9"><div class="ttname"><a href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a></div><div class="ttdeci">void hcfree(void *ptr)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00071">memory.c:71</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="memory_8c_source.html#l00071">hcfree()</a>.</p>

<p class="reference">Referenced by <a class="el" href="hashcat_8c_source.html#l01134">hashcat_session_destroy()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_cgraph.gif" border="0" usemap="#folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_cgraph" alt=""/></div>
<map name="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_cgraph" id="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_cgraph">
<area shape="rect"  title=" " alt="" coords="5,5,149,32"/>
<area shape="rect"  href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9" title=" " alt="" coords="197,5,255,32"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_icgraph.gif" border="0" usemap="#folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_icgraph" alt=""/></div>
<map name="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_icgraph" id="folder_8c_afcb834a48a7cc81e6e5b9bf3f01b50ad_icgraph">
<area shape="rect"  title=" " alt="" coords="323,5,467,32"/>
<area shape="rect"  href="hashcat_8c.html#aac7de5dfb85c0aa9bccebf9782855ffa" title=" " alt="" coords="104,5,275,32"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,5,56,32"/>
</map>
</div>

</div>
</div>
<a id="a6685756c6c027b0fb21b7b357326b358"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6685756c6c027b0fb21b7b357326b358">&#9670;&nbsp;</a></span>folder_config_init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int folder_config_init </td>
          <td>(</td>
          <td class="paramtype">hashcat_ctx_t *&#160;</td>
          <td class="paramname"><em>hashcat_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MAYBE_UNUSED const char *&#160;</td>
          <td class="paramname"><em>install_folder</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MAYBE_UNUSED const char *&#160;</td>
          <td class="paramname"><em>shared_folder</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>There's some buggy OpenCL runtime that do not support -I. A workaround is to chdir() to the OpenCL folder, then compile the kernels, then chdir() back to where we came from so we need to save it first</p>
<p>folders, as discussed on <a href="https://github.com/hashcat/hashcat/issues/20">https://github.com/hashcat/hashcat/issues/20</a></p>
<p>There's alot of problem related to bad support -I parameters when building the kernel. Each OpenCL runtime handles it slightly different. The most problematic is with new AMD drivers on Windows, which can not handle quote characters! The best workaround found so far is to modify the TMP variable (only inside hashcat process) before the runtime is load</p>
<p>kernel cache, we need to make sure folder exist</p>
<p>store for later use</p>

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00268">268</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  folder_config_t *folder_config = hashcat_ctx-&gt;folder_config;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordtype">char</span> *cwd = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <span class="keywordflow">if</span> (getcwd (cwd, HCBUFSIZ_TINY - 1) == NULL)</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  {</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <a class="code" href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a> (hashcat_ctx, <span class="stringliteral">&quot;getcwd(): %s&quot;</span>, strerror (errno));</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> exec_path_sz = 1024;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="keywordtype">char</span> *exec_path = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (exec_path_sz);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span> rc = <a class="code" href="folder_8c.html#a717595a952971e642a55e58b77079926">get_exec_path</a> (exec_path, exec_path_sz);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keywordflow">if</span> (rc == -1)</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  {</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <a class="code" href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a> (hashcat_ctx, <span class="stringliteral">&quot;get_exec_path() failed&quot;</span>);</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  }</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="preprocessor">  #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined (__CYGWIN__)</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> SLASH[] = <span class="stringliteral">&quot;/&quot;</span>;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <span class="keywordflow">if</span> (install_folder == NULL) install_folder = SLASH; <span class="comment">// makes library use easier</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="keywordtype">char</span> *resolved_install_folder = realpath (install_folder, NULL);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keywordtype">char</span> *resolved_exec_path      = realpath (exec_path, NULL);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  <span class="keywordflow">if</span> (resolved_install_folder == NULL) resolved_install_folder = <a class="code" href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a> (SLASH);</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="comment">/*</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="comment">  This causes invalid error out if install_folder (/usr/local/bin) does not exist</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="comment">  if (resolved_install_folder == NULL)</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="comment">  {</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;<span class="comment">    event_log_error (hashcat_ctx, &quot;%s: %s&quot;, resolved_install_folder, strerror (errno));</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="comment">    return -1;</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="comment">  }</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="comment">  */</span></div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keywordflow">if</span> (resolved_exec_path == NULL)</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  {</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <a class="code" href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a> (hashcat_ctx, <span class="stringliteral">&quot;%s: %s&quot;</span>, resolved_exec_path, strerror (errno));</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  }</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keywordtype">char</span> *install_dir = <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <a class="code" href="folder_8c.html#a7697b2aed3a857b8929a4a88b9a939e9">get_install_dir</a> (install_dir, resolved_exec_path);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keywordtype">char</span> *profile_dir = NULL;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  <span class="keywordtype">char</span> *session_dir = NULL;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  <span class="keywordtype">char</span> *shared_dir  = NULL;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  <span class="keywordflow">if</span> (strcmp (install_dir, resolved_install_folder) == 0)</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  {</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keyword">struct </span>passwd pw;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="keyword">struct </span>passwd *pwp;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordtype">char</span> buf[HCBUFSIZ_TINY];</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    getpwuid_r (getuid (), &amp;pw, buf, HCBUFSIZ_TINY, &amp;pwp);</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *home_dir = pwp-&gt;pw_dir;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    profile_dir = <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    session_dir = <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    get_profile_dir (profile_dir, home_dir);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    get_session_dir (session_dir, profile_dir);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    shared_dir = <a class="code" href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a> (shared_folder);</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <a class="code" href="folder_8c.html#a46700af30821003d1bd4636eb89394b6">hc_mkdir</a> (profile_dir, 0700);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <a class="code" href="folder_8c.html#a46700af30821003d1bd4636eb89394b6">hc_mkdir</a> (session_dir, 0700);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  }</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  {</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    profile_dir = install_dir;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    session_dir = install_dir;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    shared_dir  = install_dir;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  }</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (resolved_install_folder);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (resolved_exec_path);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  <span class="keywordtype">char</span> *install_dir = <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <a class="code" href="folder_8c.html#a7697b2aed3a857b8929a4a88b9a939e9">get_install_dir</a> (install_dir, exec_path);</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keywordtype">char</span> *profile_dir = install_dir;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  <span class="keywordtype">char</span> *session_dir = install_dir;</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="keywordtype">char</span> *shared_dir  = install_dir;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (exec_path);</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="keywordtype">char</span> *cpath = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="preprocessor">  #if defined (_WIN)</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  snprintf (cpath, HCBUFSIZ_TINY - 1, <span class="stringliteral">&quot;%s\\OpenCL\\&quot;</span>, shared_dir);</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="keywordtype">char</span> *cpath_real = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  <span class="keywordflow">if</span> (GetFullPathName (cpath, HCBUFSIZ_TINY - 1, cpath_real, NULL) == 0)</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  {</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <a class="code" href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a> (hashcat_ctx, <span class="stringliteral">&quot;%s: %s&quot;</span>, cpath, <span class="stringliteral">&quot;GetFullPathName()&quot;</span>);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;  }</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  snprintf (cpath, HCBUFSIZ_TINY - 1, <span class="stringliteral">&quot;%s/OpenCL/&quot;</span>, shared_dir);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  <span class="keywordtype">char</span> *cpath_real = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (PATH_MAX);</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;  <span class="keywordflow">if</span> (realpath (cpath, cpath_real) == NULL)</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  {</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <a class="code" href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a> (hashcat_ctx, <span class="stringliteral">&quot;%s: %s&quot;</span>, cpath, strerror (errno));</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  }</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (cpath);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  <span class="comment">//if (getenv (&quot;TMP&quot;) == NULL)</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="keywordflow">if</span> (1)</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  {</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="keywordtype">char</span> tmp[1000];</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    snprintf (tmp, <span class="keyword">sizeof</span> (tmp) - 1, <span class="stringliteral">&quot;TMP=%s&quot;</span>, cpath_real);</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    putenv (tmp);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  }</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="preprocessor">  #if defined (_WIN)</span></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  <a class="code" href="shared_8c.html#a1322f76e741a3aeb3e88d330c13c6d28">naive_replace</a> (cpath_real, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  <span class="comment">// not escaping here, windows using quotes later</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  <span class="comment">// naive_escape (cpath_real, PATH_MAX,  &#39; &#39;, &#39;\\&#39;);</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;  <a class="code" href="shared_8c.html#a5243867de29adb2b1b3d8c72dca3e963">naive_escape</a> (cpath_real, PATH_MAX,  <span class="charliteral">&#39; &#39;</span>, <span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  <span class="keywordtype">char</span> *kernels_folder = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  snprintf (kernels_folder, HCBUFSIZ_TINY - 1, <span class="stringliteral">&quot;%s/kernels&quot;</span>, profile_dir);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;  <a class="code" href="folder_8c.html#a46700af30821003d1bd4636eb89394b6">hc_mkdir</a> (kernels_folder, 0700);</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (kernels_folder);</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  folder_config-&gt;cwd          = cwd;</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;  folder_config-&gt;install_dir  = install_dir;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  folder_config-&gt;profile_dir  = profile_dir;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;  folder_config-&gt;session_dir  = session_dir;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  folder_config-&gt;shared_dir   = shared_dir;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;  folder_config-&gt;cpath_real   = cpath_real;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;}</div><div class="ttc" id="folder_8c_html_a46700af30821003d1bd4636eb89394b6"><div class="ttname"><a href="folder_8c.html#a46700af30821003d1bd4636eb89394b6">hc_mkdir</a></div><div class="ttdeci">int hc_mkdir(const char *name, MAYBE_UNUSED const int mode)</div><div class="ttdef"><b>Definition:</b> <a href="folder_8c_source.html#l00486">folder.c:486</a></div></div>
<div class="ttc" id="memory_8c_html_ad8ba3dcf1734b1d2c8679600f0f0c3c9"><div class="ttname"><a href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a></div><div class="ttdeci">void hcfree(void *ptr)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00071">memory.c:71</a></div></div>
<div class="ttc" id="event_8c_html_ab419d8d7e9b12e78980ed9f17bdd5ed5"><div class="ttname"><a href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5">event_log_error</a></div><div class="ttdeci">size_t event_log_error(hashcat_ctx_t *hashcat_ctx, const char *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="event_8c_source.html#l00168">event.c:168</a></div></div>
<div class="ttc" id="memory_8c_html_a03315d6f4ee82f54f7f4461a884dc32a"><div class="ttname"><a href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a></div><div class="ttdeci">char * hcstrdup(const char *s)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00056">memory.c:56</a></div></div>
<div class="ttc" id="shared_8c_html_a5243867de29adb2b1b3d8c72dca3e963"><div class="ttname"><a href="shared_8c.html#a5243867de29adb2b1b3d8c72dca3e963">naive_escape</a></div><div class="ttdeci">void naive_escape(char *s, size_t s_max, const char key_char, const char escape_char)</div><div class="ttdef"><b>Definition:</b> <a href="shared_8c_source.html#l00075">shared.c:75</a></div></div>
<div class="ttc" id="folder_8c_html_a7697b2aed3a857b8929a4a88b9a939e9"><div class="ttname"><a href="folder_8c.html#a7697b2aed3a857b8929a4a88b9a939e9">get_install_dir</a></div><div class="ttdeci">static void get_install_dir(char *install_dir, const char *exec_path)</div><div class="ttdef"><b>Definition:</b> <a href="folder_8c_source.html#l00081">folder.c:81</a></div></div>
<div class="ttc" id="folder_8c_html_a717595a952971e642a55e58b77079926"><div class="ttname"><a href="folder_8c.html#a717595a952971e642a55e58b77079926">get_exec_path</a></div><div class="ttdeci">static int get_exec_path(char *exec_path, const size_t exec_path_sz)</div><div class="ttdef"><b>Definition:</b> <a href="folder_8c_source.html#l00025">folder.c:25</a></div></div>
<div class="ttc" id="shared_8c_html_a1322f76e741a3aeb3e88d330c13c6d28"><div class="ttname"><a href="shared_8c.html#a1322f76e741a3aeb3e88d330c13c6d28">naive_replace</a></div><div class="ttdeci">void naive_replace(char *s, const char key_char, const char replace_char)</div><div class="ttdef"><b>Definition:</b> <a href="shared_8c_source.html#l00060">shared.c:60</a></div></div>
<div class="ttc" id="memory_8c_html_aac788cecd4f6c2a1524456f4a5db7cdc"><div class="ttname"><a href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a></div><div class="ttdeci">void * hcmalloc(const size_t sz)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00024">memory.c:24</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="event_8c_source.html#l00168">event_log_error()</a>, <a class="el" href="folder_8c_source.html#l00025">get_exec_path()</a>, <a class="el" href="folder_8c_source.html#l00081">get_install_dir()</a>, <a class="el" href="folder_8c_source.html#l00486">hc_mkdir()</a>, <a class="el" href="memory_8c_source.html#l00071">hcfree()</a>, <a class="el" href="memory_8c_source.html#l00024">hcmalloc()</a>, <a class="el" href="memory_8c_source.html#l00056">hcstrdup()</a>, <a class="el" href="shared_8c_source.html#l00075">naive_escape()</a>, and <a class="el" href="shared_8c_source.html#l00060">naive_replace()</a>.</p>

<p class="reference">Referenced by <a class="el" href="hashcat_8c_source.html#l00833">hashcat_session_init()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a6685756c6c027b0fb21b7b357326b358_cgraph.gif" border="0" usemap="#folder_8c_a6685756c6c027b0fb21b7b357326b358_cgraph" alt=""/></div>
<map name="folder_8c_a6685756c6c027b0fb21b7b357326b358_cgraph" id="folder_8c_a6685756c6c027b0fb21b7b357326b358_cgraph">
<area shape="rect"  title=" " alt="" coords="5,233,124,260"/>
<area shape="rect"  href="event_8c.html#ab419d8d7e9b12e78980ed9f17bdd5ed5" title=" " alt="" coords="172,31,281,57"/>
<area shape="rect"  href="folder_8c.html#a717595a952971e642a55e58b77079926" title=" " alt="" coords="173,81,280,108"/>
<area shape="rect"  href="folder_8c.html#a7697b2aed3a857b8929a4a88b9a939e9" title=" " alt="" coords="175,132,278,159"/>
<area shape="rect"  href="folder_8c.html#a46700af30821003d1bd4636eb89394b6" title=" " alt="" coords="189,183,264,209"/>
<area shape="rect"  href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9" title=" " alt="" coords="198,233,255,260"/>
<area shape="rect"  href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc" title=" " alt="" coords="331,309,406,336"/>
<area shape="rect"  href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a" title=" " alt="" coords="191,335,263,361"/>
<area shape="rect"  href="shared_8c.html#a5243867de29adb2b1b3d8c72dca3e963" title=" " alt="" coords="177,385,277,412"/>
<area shape="rect"  href="shared_8c.html#a1322f76e741a3aeb3e88d330c13c6d28" title=" " alt="" coords="177,436,277,463"/>
<area shape="rect"  href="event_8c.html#a6221c6caa1d2069ad1c3103f0b013ef7" title=" " alt="" coords="329,5,408,32"/>
<area shape="rect"  href="event_8c.html#ad5a30ac9dc4301540e19643500eb78e4" title=" " alt="" coords="331,56,407,83"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a6685756c6c027b0fb21b7b357326b358_icgraph.gif" border="0" usemap="#folder_8c_a6685756c6c027b0fb21b7b357326b358_icgraph" alt=""/></div>
<map name="folder_8c_a6685756c6c027b0fb21b7b357326b358_icgraph" id="folder_8c_a6685756c6c027b0fb21b7b357326b358_icgraph">
<area shape="rect"  title=" " alt="" coords="296,5,415,32"/>
<area shape="rect"  href="hashcat_8c.html#a9f3f1b757bdc2a874b4bb0dc657bde1d" title=" " alt="" coords="104,5,248,32"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,5,56,32"/>
</map>
</div>

</div>
</div>
<a id="a717595a952971e642a55e58b77079926"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a717595a952971e642a55e58b77079926">&#9670;&nbsp;</a></span>get_exec_path()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int get_exec_path </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>exec_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>exec_path_sz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00025">25</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">  #if defined (__linux__) || defined (__CYGWIN__)</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <span class="keywordtype">char</span> tmp[32] = { 0 };</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  snprintf (tmp, <span class="keyword">sizeof</span> (tmp) - 1, <span class="stringliteral">&quot;/proc/%d/exe&quot;</span>, getpid ());</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  <span class="keyword">const</span> ssize_t len = readlink (tmp, exec_path, exec_path_sz - 1);</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <span class="keywordflow">if</span> (len == -1) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">  #elif defined (_WIN)</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keyword">const</span> DWORD len = GetModuleFileName (NULL, exec_path, exec_path_sz - 1);</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <span class="keywordflow">if</span> (len == 0) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">  #elif defined (__APPLE__)</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  u32 size = (u32) exec_path_sz;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="keywordflow">if</span> (_NSGetExecutablePath (exec_path, &amp;size) != 0) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> len = strlen (exec_path);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">  #elif defined (__FreeBSD__)</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">  #include &lt;sys/sysctl.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keywordtype">int</span> mib[4];</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  mib[0] = CTL_KERN;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  mib[1] = KERN_PROC;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  mib[2] = KERN_PROC_PATHNAME;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  mib[3] = -1;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordtype">char</span> tmp[32] = { 0 };</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keywordtype">size_t</span> size = exec_path_sz;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  sysctl (mib, 4, exec_path, &amp;size, NULL, 0);</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="keyword">const</span> ssize_t len = readlink (tmp, exec_path, exec_path_sz - 1);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="keywordflow">if</span> (len == -1) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">  #error Your Operating System is not supported or detected</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  exec_path[len] = 0;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="folder_8c_source.html#l00268">folder_config_init()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a717595a952971e642a55e58b77079926_icgraph.gif" border="0" usemap="#folder_8c_a717595a952971e642a55e58b77079926_icgraph" alt=""/></div>
<map name="folder_8c_a717595a952971e642a55e58b77079926_icgraph" id="folder_8c_a717595a952971e642a55e58b77079926_icgraph">
<area shape="rect"  title=" " alt="" coords="463,5,569,32"/>
<area shape="rect"  href="folder_8c.html#a6685756c6c027b0fb21b7b357326b358" title=" " alt="" coords="296,5,415,32"/>
<area shape="rect"  href="hashcat_8c.html#a9f3f1b757bdc2a874b4bb0dc657bde1d" title=" " alt="" coords="104,5,248,32"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,5,56,32"/>
</map>
</div>

</div>
</div>
<a id="a7697b2aed3a857b8929a4a88b9a939e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7697b2aed3a857b8929a4a88b9a939e9">&#9670;&nbsp;</a></span>get_install_dir()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void get_install_dir </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>install_dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>exec_path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00081">81</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  strncpy (install_dir, exec_path, HCBUFSIZ_TINY - 1);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keywordtype">char</span> *last_slash = NULL;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">if</span> ((last_slash = strrchr (install_dir, <span class="charliteral">&#39;/&#39;</span>)) != NULL)</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    *last_slash = 0;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((last_slash = strrchr (install_dir, <span class="charliteral">&#39;\\&#39;</span>)) != NULL)</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    *last_slash = 0;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  }</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keywordflow">else</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    install_dir[0] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    install_dir[1] = 0;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="folder_8c_source.html#l00268">folder_config_init()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a7697b2aed3a857b8929a4a88b9a939e9_icgraph.gif" border="0" usemap="#folder_8c_a7697b2aed3a857b8929a4a88b9a939e9_icgraph" alt=""/></div>
<map name="folder_8c_a7697b2aed3a857b8929a4a88b9a939e9_icgraph" id="folder_8c_a7697b2aed3a857b8929a4a88b9a939e9_icgraph">
<area shape="rect"  title=" " alt="" coords="463,5,565,32"/>
<area shape="rect"  href="folder_8c.html#a6685756c6c027b0fb21b7b357326b358" title=" " alt="" coords="296,5,415,32"/>
<area shape="rect"  href="hashcat_8c.html#a9f3f1b757bdc2a874b4bb0dc657bde1d" title=" " alt="" coords="104,5,248,32"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,5,56,32"/>
</map>
</div>

</div>
</div>
<a id="a46700af30821003d1bd4636eb89394b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46700af30821003d1bd4636eb89394b6">&#9670;&nbsp;</a></span>hc_mkdir()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int hc_mkdir </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MAYBE_UNUSED const int&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00486">486</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;{</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="preprocessor">  #if defined (_WIN)</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keywordflow">return</span> _mkdir (name);</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="keywordflow">return</span> mkdir (name, mode);</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="folder_8c_source.html#l00268">folder_config_init()</a>, <a class="el" href="induct_8c_source.html#l00025">induct_ctx_init()</a>, and <a class="el" href="outfile__check_8c_source.html#l00319">outcheck_ctx_init()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a46700af30821003d1bd4636eb89394b6_icgraph.gif" border="0" usemap="#folder_8c_a46700af30821003d1bd4636eb89394b6_icgraph" alt=""/></div>
<map name="folder_8c_a46700af30821003d1bd4636eb89394b6_icgraph" id="folder_8c_a46700af30821003d1bd4636eb89394b6_icgraph">
<area shape="rect"  title=" " alt="" coords="468,56,543,83"/>
<area shape="rect"  href="folder_8c.html#a6685756c6c027b0fb21b7b357326b358" title=" " alt="" coords="299,5,417,32"/>
<area shape="rect"  href="induct_8c.html#ae311757af7f13bf163ecd0ec8d32098c" title=" " alt="" coords="305,56,411,83"/>
<area shape="rect"  href="outfile__check_8c.html#aad66c1c8a9f9bebd41699c024aeac309" title=" " alt="" coords="296,107,420,133"/>
<area shape="rect"  href="hashcat_8c.html#a9f3f1b757bdc2a874b4bb0dc657bde1d" title=" " alt="" coords="104,56,248,83"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,56,56,83"/>
</map>
</div>

</div>
</div>
<a id="ab1b45d4b9134e94d056df48b098bc925"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1b45d4b9134e94d056df48b098bc925">&#9670;&nbsp;</a></span>scan_directory()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char** scan_directory </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00178">178</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;{</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keywordtype">char</span> *tmp_path = <a class="code" href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a> (path);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <span class="keywordtype">size_t</span> tmp_path_len = strlen (tmp_path);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordflow">while</span> (tmp_path[tmp_path_len - 1] == <span class="charliteral">&#39;/&#39;</span> || tmp_path[tmp_path_len - 1] == <span class="charliteral">&#39;\\&#39;</span>)</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  {</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    tmp_path[tmp_path_len - 1] = 0;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    tmp_path_len = strlen (tmp_path);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  }</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="keywordtype">char</span> **files = NULL;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="keywordtype">size_t</span> num_files = 0;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  DIR *d = NULL;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <span class="keywordflow">if</span> ((d = opendir (tmp_path)) != NULL)</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  {</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">    #if 0</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keyword">struct </span>dirent e;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">for</span> (;;)</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    {</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;      memset (&amp;e, 0, <span class="keyword">sizeof</span> (e));</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;      <span class="keyword">struct </span>dirent *de = NULL;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <span class="keywordflow">if</span> (readdir_r (d, &amp;e, &amp;de) != 0) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      <span class="keywordflow">if</span> (de == NULL) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">    #else</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keyword">struct </span>dirent *de;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">while</span> ((de = readdir (d)) != NULL)</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <span class="keywordflow">if</span> ((strncmp (de-&gt;d_name, <span class="stringliteral">&quot;.&quot;</span>, strlen (de-&gt;d_name)) == 0) || (strncmp (de-&gt;d_name, <span class="stringliteral">&quot;..&quot;</span>, strlen (de-&gt;d_name)) == 0)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      <span class="keywordtype">char</span> *path_file = (<span class="keywordtype">char</span> *) <a class="code" href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a> (HCBUFSIZ_TINY);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      snprintf (path_file, HCBUFSIZ_TINY - 1, <span class="stringliteral">&quot;%s/%s&quot;</span>, tmp_path, de-&gt;d_name);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;      DIR *d_test;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      <span class="keywordflow">if</span> ((d_test = opendir (path_file)) != NULL)</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        closedir (d_test);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (path_file);</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      }</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      <span class="keywordflow">else</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      {</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        files = (<span class="keywordtype">char</span> **) <a class="code" href="memory_8c.html#a42c19c60b8cdb265ddabe5c1686c4fa5">hcrealloc</a> (files, (num_files + 1) * <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *), <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *));</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        files[num_files] = path_file;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        num_files++;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      }</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    }</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    closedir (d);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  }</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno == ENOTDIR)</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    files = (<span class="keywordtype">char</span> **) <a class="code" href="memory_8c.html#a42c19c60b8cdb265ddabe5c1686c4fa5">hcrealloc</a> (files, (num_files + 1) * <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *), <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *));</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    files[num_files] = <a class="code" href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a> (path);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    num_files++;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  }</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  files = (<span class="keywordtype">char</span> **) <a class="code" href="memory_8c.html#a42c19c60b8cdb265ddabe5c1686c4fa5">hcrealloc</a> (files, (num_files + 1) * <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *), <span class="keyword">sizeof</span> (<span class="keywordtype">char</span> *));</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  files[num_files] = NULL;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  num_files++;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a> (tmp_path);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <span class="keywordflow">return</span> (files);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;}</div><div class="ttc" id="memory_8c_html_a42c19c60b8cdb265ddabe5c1686c4fa5"><div class="ttname"><a href="memory_8c.html#a42c19c60b8cdb265ddabe5c1686c4fa5">hcrealloc</a></div><div class="ttdeci">void * hcrealloc(void *ptr, const size_t oldsz, const size_t addsz)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00040">memory.c:40</a></div></div>
<div class="ttc" id="memory_8c_html_ad8ba3dcf1734b1d2c8679600f0f0c3c9"><div class="ttname"><a href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9">hcfree</a></div><div class="ttdeci">void hcfree(void *ptr)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00071">memory.c:71</a></div></div>
<div class="ttc" id="memory_8c_html_a03315d6f4ee82f54f7f4461a884dc32a"><div class="ttname"><a href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a">hcstrdup</a></div><div class="ttdeci">char * hcstrdup(const char *s)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00056">memory.c:56</a></div></div>
<div class="ttc" id="memory_8c_html_aac788cecd4f6c2a1524456f4a5db7cdc"><div class="ttname"><a href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc">hcmalloc</a></div><div class="ttdeci">void * hcmalloc(const size_t sz)</div><div class="ttdef"><b>Definition:</b> <a href="memory_8c_source.html#l00024">memory.c:24</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="memory_8c_source.html#l00071">hcfree()</a>, <a class="el" href="memory_8c_source.html#l00024">hcmalloc()</a>, <a class="el" href="memory_8c_source.html#l00040">hcrealloc()</a>, and <a class="el" href="memory_8c_source.html#l00056">hcstrdup()</a>.</p>

<p class="reference">Referenced by <a class="el" href="induct_8c_source.html#l00098">induct_ctx_scan()</a>, <a class="el" href="outfile__check_8c_source.html#l00019">outfile_remove()</a>, and <a class="el" href="straight_8c_source.html#l00174">straight_ctx_init()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_ab1b45d4b9134e94d056df48b098bc925_cgraph.gif" border="0" usemap="#folder_8c_ab1b45d4b9134e94d056df48b098bc925_cgraph" alt=""/></div>
<map name="folder_8c_ab1b45d4b9134e94d056df48b098bc925_cgraph" id="folder_8c_ab1b45d4b9134e94d056df48b098bc925_cgraph">
<area shape="rect"  title=" " alt="" coords="5,81,112,108"/>
<area shape="rect"  href="memory_8c.html#ad8ba3dcf1734b1d2c8679600f0f0c3c9" title=" " alt="" coords="169,5,226,32"/>
<area shape="rect"  href="memory_8c.html#aac788cecd4f6c2a1524456f4a5db7cdc" title=" " alt="" coords="283,107,357,133"/>
<area shape="rect"  href="memory_8c.html#a42c19c60b8cdb265ddabe5c1686c4fa5" title=" " alt="" coords="160,107,235,133"/>
<area shape="rect"  href="memory_8c.html#a03315d6f4ee82f54f7f4461a884dc32a" title=" " alt="" coords="161,157,233,184"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_ab1b45d4b9134e94d056df48b098bc925_icgraph.gif" border="0" usemap="#folder_8c_ab1b45d4b9134e94d056df48b098bc925_icgraph" alt=""/></div>
<map name="folder_8c_ab1b45d4b9134e94d056df48b098bc925_icgraph" id="folder_8c_ab1b45d4b9134e94d056df48b098bc925_icgraph">
<area shape="rect"  title=" " alt="" coords="968,56,1075,83"/>
<area shape="rect"  href="induct_8c.html#a3f87d03536d320ed0caf58058947cfe0" title=" " alt="" coords="803,5,920,32"/>
<area shape="rect"  href="outfile__check_8c.html#a39b7fbaa8d12928613fcd7399eb49ad2" title=" " alt="" coords="651,56,755,83"/>
<area shape="rect"  href="straight_8c.html#ac38042838c02bcb1ca4b24b87047b34d" title=" " alt="" coords="804,107,919,133"/>
<area shape="rect"  href="hashcat_8c.html#a9ec4f74d423ae0bd4aa6e960632b7086" title=" " alt="" coords="659,5,747,32"/>
<area shape="rect"  href="hashcat_8c.html#ad6cc36d03dcdad3413c794efecb3178a" title=" " alt="" coords="485,5,573,32"/>
<area shape="rect"  href="hashcat_8c.html#ac33e9695b713153c0fc7cce11696704b" title=" " alt="" coords="325,56,408,83"/>
<area shape="rect"  href="hashcat_8c.html#ac49fece3f82732fda9eb29766cc01168" title=" " alt="" coords="104,56,277,83"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,56,56,83"/>
<area shape="rect"  href="outfile__check_8c.html#aa0e20db36255679b69e7423e65995f99" title=" " alt="" coords="456,56,603,83"/>
</map>
</div>

</div>
</div>
<a id="a2c805d1855b4a1b7c3b71991036659c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c805d1855b4a1b7c3b71991036659c8">&#9670;&nbsp;</a></span>sort_by_stringptr()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sort_by_stringptr </td>
          <td>(</td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Author......: See docs/credits.txt License.....: MIT </p>

<p class="definition">Definition at line <a class="el" href="folder_8c_source.html#l00017">17</a> of file <a class="el" href="folder_8c_source.html">folder.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> **s1 = (<span class="keyword">const</span> <span class="keywordtype">char</span> **) p1;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> **s2 = (<span class="keyword">const</span> <span class="keywordtype">char</span> **) p2;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;  <span class="keywordflow">return</span> strcmp (*s1, *s2);</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="straight_8c_source.html#l00174">straight_ctx_init()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="folder_8c_a2c805d1855b4a1b7c3b71991036659c8_icgraph.gif" border="0" usemap="#folder_8c_a2c805d1855b4a1b7c3b71991036659c8_icgraph" alt=""/></div>
<map name="folder_8c_a2c805d1855b4a1b7c3b71991036659c8_icgraph" id="folder_8c_a2c805d1855b4a1b7c3b71991036659c8_icgraph">
<area shape="rect"  title=" " alt="" coords="619,5,737,32"/>
<area shape="rect"  href="straight_8c.html#ac38042838c02bcb1ca4b24b87047b34d" title=" " alt="" coords="456,5,571,32"/>
<area shape="rect"  href="hashcat_8c.html#ac33e9695b713153c0fc7cce11696704b" title=" " alt="" coords="325,5,408,32"/>
<area shape="rect"  href="hashcat_8c.html#ac49fece3f82732fda9eb29766cc01168" title=" " alt="" coords="104,5,277,32"/>
<area shape="rect"  href="main_8c.html#a3c04138a5bfe5d72780bb7e82a18e627" title=" " alt="" coords="5,5,56,32"/>
</map>
</div>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>
